package cn.uniqueinfo.dp.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @author:朱元勋
 * @mail:395910063@qq.com
 * @date:2018-12-18 15:11:21
 * @description:mapper基类
 */
@Mapper
@Component
public interface BaseMapper<T> {
    /**
     * @author: 朱元勋
     * @date: 2019/1/3 17:02
     * @description: 新增对象
     * @param:item 要新增的对象
     * @return:Integer 新增数据成功后对应的主键id值
     */
    Long insert(T item);
    /**
     * @author:朱元勋
     * @date:2019/1/3 17:05
     * @description: 更新对象
     * @param: item 要更新的对象
     * @return: 影响的记录数
     */
    Integer update(T item);
    /**
     * @author:朱元勋
     * @date:2019/1/3 17:07
     * @description:删除对象
     * @param: 被删除对象
     * @return: 影响的记录数
     */
    Integer delete(T item);
    /**
     * @author:朱元勋
     * @date:2019/1/3 17:08
     * @description: 批量删除对象
     * @param:ids 对象id字符串如1,3,4,5
     * @return:影响的记录数
     */
    Integer deleteByIds(@Param(value = "ids") String ids);
    /**
     * @author:朱元勋
     * @date:2019/1/3 16:59
     * @description:获取一个对象
     * @param:item 要获取的对象
     * @return: 要获取的对象
     */
    T findOne(T item);
    /**
     * @author:朱元勋
     * @date:2019/1/3 17:09
     * @description:获取多个对象
     * @param: 查询条件
     * @return:对象列表
     */
    List<T> findAll(T item);
    /**
     * @author:朱元勋
     * @date:2019/1/3 17:10
     * @description:分页查询
     * @param:
     * @return:对象列表
     */
    List<T> findPage();
}
